package com.tedu.api.thread;

/**
 * 3.了解线程常用方法  结合Lambda
 * GetPriority() 基本线程API  获取线程优先级:1~10 默认:5
 * setPriority() 常用线程API  设置线程优先级
 * 使用方法:setPriority(1~10) 数值越大,线程执行优先级别越高
 *         setPriority(Thread.MAX_PRIORITY)
 *         Thread线程类--提供常量:表示优先级:最大跟最小
 *         Lambda-->Thread
 * 总结:线程优先级决定:优先级数值越大,几率越高,而不是最终结果
 * 结论:三个线程,同时执行1000次输出语句【并发】
 * 线程原则上可以指定优先级,不能主动获取CPU时间片,也不能决定时间片的长度,只能被动分配,指定优先级只是最大程度
 * 上改变CPU时间片获取线程几率!
 * 理论上:线程优先级越高,CPU时间片获取次数越高！
 */
public class Thread_Priority {
    public static void main(String[] args) {
        //创建线程
        Thread ld = new Thread(() -> {
            for (int i = 0; i < 15; i++) {
                System.out.println("孩子们,你们的牢大回来了！！！");
            }});

        Thread cxk = new Thread(() -> {
            for (int i = 0; i < 20; i++) {
                System.out.println("小黑子,你把篮球和鸡联系起来想一想！！！！");
            }});

        Thread lb = new Thread(() -> {
            for (int i = 0; i < 25; i++) {
                System.out.println("兄弟们,奥利给干了！！！！！");
            }});

        ld.setPriority(1);//概率最后执行
        //cxk.setPriority(1);
        lb.setPriority(Thread.MAX_PRIORITY);//设置最大、最小优先级

        ld.start();
        cxk.start();
        lb.start();
    }
}
